package com.dragon.modules.yuegou.entity.wallet;

import com.baomidou.mybatisplus.annotation.TableName;
import com.dragon.modules.yuegou.enums.wallet.MemberCardBindStatus;
import com.dragon.modules.yuegou.enums.wallet.MemberCardPresentStatus;
import com.dragon.modules.yuegou.enums.wallet.MemberCardSource;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;

import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * 会员悦卡（简称悦卡）实体类<br>
 * 对应的表为：walt_member_card<br>
 * 
 * @author pbuilder generated
 * @date 2019-06-03 15:20:36
 * @company sgy
 * @version 2.0
 */
@TableName("walt_member_card")
@ApiModel(description = "会员悦卡（简称悦卡）")
public class MemberCardEntity {

    /** 会员悦卡ID */
	@ApiModelProperty("会员悦卡ID")
	protected String id;

    /** 会员ID（冗余ID） */
	@ApiModelProperty("会员ID（冗余ID）")
	protected String memberId;

    /** 会员钱包ID */
	@ApiModelProperty("会员钱包ID")
	protected String memberWalletId;

    /** 悦卡类型ID */
	@ApiModelProperty("悦卡类型ID")
	protected String cardTemplateId;

    /** 悦卡卡号 */
	@ApiModelProperty("悦卡卡号")
	protected String cardNo;

    /** 企业ID（发放悦卡的企业，会员自行购买时此字段为空） */
	@ApiModelProperty("企业ID（发放悦卡的企业，会员自行购买时此字段为空）")
	protected String companyId;

    /** 员工id */
	@ApiModelProperty("员工id")
	protected String employeesId;

    /** 悦卡余额 */
	@ApiModelProperty("悦卡余额")
	protected BigDecimal remain;

    /** 悦卡总额（不变） */
	@ApiModelProperty("悦卡总额（不变）")
	protected BigDecimal amount;

    /** 版本 */
	@ApiModelProperty("版本")
	protected Integer version;

    /** [枚举]悦卡来源：0-会员充值-MEMBER_BUY、1-企业发放-COMPANY_GRANT、2-实体卡绑定-ENTITY_BIND */
	@ApiModelProperty("[枚举]悦卡来源：0-会员充值-MEMBER_BUY、1-企业发放-COMPANY_GRANT、2-实体卡绑定-ENTITY_BIND")
	protected MemberCardSource source;

    /** 有效期开始时间（包含） */
	@ApiModelProperty("有效期开始时间（包含）")
	protected LocalDateTime startTime;

    /** 有效期截止时间（不包含） */
	@ApiModelProperty("有效期截止时间（不包含）")
	protected LocalDateTime endTime;

    /** 是否已退卡 */
	@ApiModelProperty("是否已退卡")
	protected Boolean refund;

    /** [枚举]绑定状态：0-不能绑定-NOT_CAN、1-已绑定-BINDING、2-已解绑-UNBINDING */
	@ApiModelProperty("[枚举]绑定状态：0-不能绑定-NOT_CAN、1-已绑定-BINDING、2-已解绑-UNBINDING")
	protected MemberCardBindStatus bindStatus;

    /** [枚举]赠送状态：0-未赠送-NOT_PRESENT、1-赠送中-PRESENTING、2-已赠送-PRESENTED */
	@ApiModelProperty("[枚举]赠送状态：0-未赠送-NOT_PRESENT、1-赠送中-PRESENTING、2-已赠送-PRESENTED")
	protected MemberCardPresentStatus presentStatus;

    /** 是否优先排序 0 不优先 1优先 */
	@ApiModelProperty("是否优先排序 0 不优先 1优先")
	protected Boolean prioritization;

    /** 创建时间 */
	@ApiModelProperty("创建时间")
	protected LocalDateTime createdTime;

    /**  */
	protected LocalDateTime modifiedTime;

	/**
	 * 构造一个空会员悦卡（简称悦卡）实体对象
	 */
	public MemberCardEntity(){
		super();
	}

	/**
	 * 依据其它对象的信息构造一个会员悦卡（简称悦卡）实体对象
	 * 
	 * @param other 其它对象
	 */
	public MemberCardEntity(MemberCardEntity other){
		super();
     	this.id = other.id;
     	this.memberId = other.memberId;
     	this.memberWalletId = other.memberWalletId;
     	this.cardTemplateId = other.cardTemplateId;
     	this.cardNo = other.cardNo;
     	this.companyId = other.companyId;
     	this.employeesId = other.employeesId;
     	this.remain = other.remain;
     	this.amount = other.amount;
     	this.version = other.version;
     	this.source = other.source;
     	this.startTime = other.startTime;
     	this.endTime = other.endTime;
     	this.refund = other.refund;
     	this.bindStatus = other.bindStatus;
     	this.presentStatus = other.presentStatus;
     	this.prioritization = other.prioritization;
     	this.createdTime = other.createdTime;
     	this.modifiedTime = other.modifiedTime;
	}


	/**
	 * 获取会员悦卡ID
	 * 
	 * @return id 会员悦卡ID
	 */
	public String getId() {
		return id;
	}
  	
	/**
	 * 设置会员悦卡ID
	 * 
	 * @param id 会员悦卡ID
	 */
	public void setId(String id) {
		this.id = id;
	}

	/**
	 * 获取会员ID（冗余ID）
	 * 
	 * @return memberId 会员ID（冗余ID）
	 */
	public String getMemberId() {
		return memberId;
	}
  	
	/**
	 * 设置会员ID（冗余ID）
	 * 
	 * @param memberId 会员ID（冗余ID）
	 */
	public void setMemberId(String memberId) {
		this.memberId = memberId;
	}

	/**
	 * 获取会员钱包ID
	 * 
	 * @return memberWalletId 会员钱包ID
	 */
	public String getMemberWalletId() {
		return memberWalletId;
	}
  	
	/**
	 * 设置会员钱包ID
	 * 
	 * @param memberWalletId 会员钱包ID
	 */
	public void setMemberWalletId(String memberWalletId) {
		this.memberWalletId = memberWalletId;
	}

	/**
	 * 获取悦卡类型ID
	 * 
	 * @return cardTemplateId 悦卡类型ID
	 */
	public String getCardTemplateId() {
		return cardTemplateId;
	}
  	
	/**
	 * 设置悦卡类型ID
	 * 
	 * @param cardTemplateId 悦卡类型ID
	 */
	public void setCardTemplateId(String cardTemplateId) {
		this.cardTemplateId = cardTemplateId;
	}

	/**
	 * 获取悦卡卡号
	 * 
	 * @return cardNo 悦卡卡号
	 */
	public String getCardNo() {
		return cardNo;
	}
  	
	/**
	 * 设置悦卡卡号
	 * 
	 * @param cardNo 悦卡卡号
	 */
	public void setCardNo(String cardNo) {
		this.cardNo = cardNo;
	}

	/**
	 * 获取企业ID（发放悦卡的企业，会员自行购买时此字段为空）
	 * 
	 * @return companyId 企业ID（发放悦卡的企业，会员自行购买时此字段为空）
	 */
	public String getCompanyId() {
		return companyId;
	}
  	
	/**
	 * 设置企业ID（发放悦卡的企业，会员自行购买时此字段为空）
	 * 
	 * @param companyId 企业ID（发放悦卡的企业，会员自行购买时此字段为空）
	 */
	public void setCompanyId(String companyId) {
		this.companyId = companyId;
	}

	/**
	 * 获取员工id
	 * 
	 * @return employeesId 员工id
	 */
	public String getEmployeesId() {
		return employeesId;
	}
  	
	/**
	 * 设置员工id
	 * 
	 * @param employeesId 员工id
	 */
	public void setEmployeesId(String employeesId) {
		this.employeesId = employeesId;
	}

	/**
	 * 获取悦卡余额
	 * 
	 * @return remain 悦卡余额
	 */
	public BigDecimal getRemain() {
		return remain;
	}
  	
	/**
	 * 设置悦卡余额
	 * 
	 * @param remain 悦卡余额
	 */
	public void setRemain(BigDecimal remain) {
		this.remain = remain;
	}

	/**
	 * 获取悦卡总额（不变）
	 * 
	 * @return amount 悦卡总额（不变）
	 */
	public BigDecimal getAmount() {
		return amount;
	}
  	
	/**
	 * 设置悦卡总额（不变）
	 * 
	 * @param amount 悦卡总额（不变）
	 */
	public void setAmount(BigDecimal amount) {
		this.amount = amount;
	}

	/**
	 * 获取版本
	 * 
	 * @return version 版本
	 */
	public Integer getVersion() {
		return version;
	}
  	
	/**
	 * 设置版本
	 * 
	 * @param version 版本
	 */
	public void setVersion(Integer version) {
		this.version = version;
	}

	/**
	 * 获取[枚举]悦卡来源：0-会员充值-MEMBER_BUY、1-企业发放-COMPANY_GRANT、2-实体卡绑定-ENTITY_BIND
	 * 
	 * @return source [枚举]悦卡来源：0-会员充值-MEMBER_BUY、1-企业发放-COMPANY_GRANT、2-实体卡绑定-ENTITY_BIND
	 */
	public MemberCardSource getSource() {
		return source;
	}
  	
	/**
	 * 设置[枚举]悦卡来源：0-会员充值-MEMBER_BUY、1-企业发放-COMPANY_GRANT、2-实体卡绑定-ENTITY_BIND
	 * 
	 * @param source [枚举]悦卡来源：0-会员充值-MEMBER_BUY、1-企业发放-COMPANY_GRANT、2-实体卡绑定-ENTITY_BIND
	 */
	public void setSource(MemberCardSource source) {
		this.source = source;
	}

	/**
	 * 获取有效期开始时间（包含）
	 * 
	 * @return startTime 有效期开始时间（包含）
	 */
	public LocalDateTime getStartTime() {
		return startTime;
	}
  	
	/**
	 * 设置有效期开始时间（包含）
	 * 
	 * @param startTime 有效期开始时间（包含）
	 */
	public void setStartTime(LocalDateTime startTime) {
		this.startTime = startTime;
	}

	/**
	 * 获取有效期截止时间（不包含）
	 * 
	 * @return endTime 有效期截止时间（不包含）
	 */
	public LocalDateTime getEndTime() {
		return endTime;
	}
  	
	/**
	 * 设置有效期截止时间（不包含）
	 * 
	 * @param endTime 有效期截止时间（不包含）
	 */
	public void setEndTime(LocalDateTime endTime) {
		this.endTime = endTime;
	}

	/**
	 * 获取是否已退卡
	 * 
	 * @return refund 是否已退卡
	 */
	public Boolean getRefund() {
		return refund;
	}
  	
	/**
	 * 设置是否已退卡
	 * 
	 * @param refund 是否已退卡
	 */
	public void setRefund(Boolean refund) {
		this.refund = refund;
	}

	/**
	 * 获取[枚举]绑定状态：0-不能绑定-NOT_CAN、1-已绑定-BINDING、2-已解绑-UNBINDING
	 * 
	 * @return bindStatus [枚举]绑定状态：0-不能绑定-NOT_CAN、1-已绑定-BINDING、2-已解绑-UNBINDING
	 */
	public MemberCardBindStatus getBindStatus() {
		return bindStatus;
	}
  	
	/**
	 * 设置[枚举]绑定状态：0-不能绑定-NOT_CAN、1-已绑定-BINDING、2-已解绑-UNBINDING
	 * 
	 * @param bindStatus [枚举]绑定状态：0-不能绑定-NOT_CAN、1-已绑定-BINDING、2-已解绑-UNBINDING
	 */
	public void setBindStatus(MemberCardBindStatus bindStatus) {
		this.bindStatus = bindStatus;
	}

	/**
	 * 获取[枚举]赠送状态：0-未赠送-NOT_PRESENT、1-赠送中-PRESENTING、2-已赠送-PRESENTED
	 * 
	 * @return presentStatus [枚举]赠送状态：0-未赠送-NOT_PRESENT、1-赠送中-PRESENTING、2-已赠送-PRESENTED
	 */
	public MemberCardPresentStatus getPresentStatus() {
		return presentStatus;
	}
  	
	/**
	 * 设置[枚举]赠送状态：0-未赠送-NOT_PRESENT、1-赠送中-PRESENTING、2-已赠送-PRESENTED
	 * 
	 * @param presentStatus [枚举]赠送状态：0-未赠送-NOT_PRESENT、1-赠送中-PRESENTING、2-已赠送-PRESENTED
	 */
	public void setPresentStatus(MemberCardPresentStatus presentStatus) {
		this.presentStatus = presentStatus;
	}

	/**
	 * 获取是否优先排序 0 不优先 1优先
	 * 
	 * @return prioritization 是否优先排序 0 不优先 1优先
	 */
	public Boolean getPrioritization() {
		return prioritization;
	}
  	
	/**
	 * 设置是否优先排序 0 不优先 1优先
	 * 
	 * @param prioritization 是否优先排序 0 不优先 1优先
	 */
	public void setPrioritization(Boolean prioritization) {
		this.prioritization = prioritization;
	}

	/**
	 * 获取创建时间
	 * 
	 * @return createdTime 创建时间
	 */
	public LocalDateTime getCreatedTime() {
		return createdTime;
	}
  	
	/**
	 * 设置创建时间
	 * 
	 * @param createdTime 创建时间
	 */
	public void setCreatedTime(LocalDateTime createdTime) {
		this.createdTime = createdTime;
	}

	/**
	 * 获取
	 * 
	 * @return modifiedTime 
	 */
	public LocalDateTime getModifiedTime() {
		return modifiedTime;
	}
  	
	/**
	 * 设置
	 * 
	 * @param modifiedTime 
	 */
	public void setModifiedTime(LocalDateTime modifiedTime) {
		this.modifiedTime = modifiedTime;
	}

    public String toString() {
		return new StringBuilder().append("MemberCardEntity{").
			append("id=").append(id).
			append(",memberId=").append(memberId).
			append(",memberWalletId=").append(memberWalletId).
			append(",cardTemplateId=").append(cardTemplateId).
			append(",cardNo=").append(cardNo).
			append(",companyId=").append(companyId).
			append(",employeesId=").append(employeesId).
			append(",remain=").append(remain).
			append(",amount=").append(amount).
			append(",version=").append(version).
			append(",source=").append(source).
			append(",startTime=").append(startTime).
			append(",endTime=").append(endTime).
			append(",refund=").append(refund).
			append(",bindStatus=").append(bindStatus).
			append(",presentStatus=").append(presentStatus).
			append(",prioritization=").append(prioritization).
			append(",createdTime=").append(createdTime).
			append(",modifiedTime=").append(modifiedTime).
			append('}').toString();
    }

	/**
	 * 复制对象
	 * 
	 * @return 复制后的新实体对象
	 */
	public MemberCardEntity copy() {
		return new MemberCardEntity(this);
	}

    /** 会员悦卡ID */
	public static final String COL_ID = "id";

    /** 会员ID（冗余ID） */
	public static final String COL_MEMBER_ID = "member_id";

    /** 会员钱包ID */
	public static final String COL_MEMBER_WALLET_ID = "member_wallet_id";

    /** 悦卡类型ID */
	public static final String COL_CARD_TEMPLATE_ID = "card_template_id";

    /** 悦卡卡号 */
	public static final String COL_CARD_NO = "card_no";

    /** 企业ID（发放悦卡的企业，会员自行购买时此字段为空） */
	public static final String COL_COMPANY_ID = "company_id";

    /** 员工id */
	public static final String COL_EMPLOYEES_ID = "employees_id";

    /** 悦卡余额 */
	public static final String COL_REMAIN = "remain";

    /** 悦卡总额（不变） */
	public static final String COL_AMOUNT = "amount";

    /** 版本 */
	public static final String COL_VERSION = "version";

    /** [枚举]悦卡来源：0-会员充值-MEMBER_BUY、1-企业发放-COMPANY_GRANT、2-实体卡绑定-ENTITY_BIND */
	public static final String COL_SOURCE = "source";

    /** 有效期开始时间（包含） */
	public static final String COL_START_TIME = "start_time";

    /** 有效期截止时间（不包含） */
	public static final String COL_END_TIME = "end_time";

    /** 是否已退卡 */
	public static final String COL_REFUND = "refund";

    /** [枚举]绑定状态：0-不能绑定-NOT_CAN、1-已绑定-BINDING、2-已解绑-UNBINDING */
	public static final String COL_BIND_STATUS = "bind_status";

    /** [枚举]赠送状态：0-未赠送-NOT_PRESENT、1-赠送中-PRESENTING、2-已赠送-PRESENTED */
	public static final String COL_PRESENT_STATUS = "present_status";

    /** 是否优先排序 0 不优先 1优先 */
	public static final String COL_PRIORITIZATION = "prioritization";

    /** 创建时间 */
	public static final String COL_CREATED_TIME = "created_time";

    /**  */
	public static final String COL_MODIFIED_TIME = "modified_time";
}
